package cn.reineko.csmall.passport.service;

import cn.reineko.csmall.passport.pojo.dto.AdminAddNewDTO;
import cn.reineko.csmall.passport.pojo.dto.AdminUpdateDTO;
import cn.reineko.csmall.passport.pojo.dto.AdminUpdatePasswordDTO;
import cn.reineko.csmall.passport.pojo.vo.AdminListItemVO;

import java.util.List;

/**
 * 管理员的Service业务接口
 *
 * @author reineko
 * @version 1.0.0
 */
public interface IAdminService {

    /**
     * 添加一个管理员
     * @param adminAddNewDTO 必须封装需要添加的管理员的数据
     */
    void addNew(AdminAddNewDTO adminAddNewDTO);

    /**
     * 根据id删除一个管理员
     * @param id 尝试删除的管理员的id值
     */
    void deleteById(Long id);

    /**
     * 启用管理员账号
     * @param id 尝试启用的管理员账号id值
     */
    void setEnable(Long id);

    /**
     * 禁用管理员账号
     * @param id 尝试禁用的管理员账号的id值
     */
    void setDisable(Long id);

    /**
     * 根据id修改管理员的密码（此功能暂定为超级管理员修改管理员密码，不用做密码是否相等的判断）
     * @param adminUpdatePasswordDTO 必须封装需修改密码的管理员的id值，以及新的密码属性的值
     */
    void updatePasswordById(AdminUpdatePasswordDTO adminUpdatePasswordDTO);

    /**
     * 根据id修改管理员的基本信息
     * @param adminUpdateDTO 必须封装需要修改的管理员id值，以及需修改的基本信息的新的值
     */
    void updateById(AdminUpdateDTO adminUpdateDTO);

    /**
     * 查询所有的管理员信息
     * @return 查询出所有的管理员信息，并将其存放到List集合中返回
     */
    List<AdminListItemVO> list();

}
